package com.reservation.taxi.sanyataxi.enums;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public enum IPCTypeEnum {

    /**
     * baselnfoCompany,网约车平台公司基本信息
     */
    BASE_INFO_COMPANY("baseInfoCompany", "网约车平台公司基本信息"),

    /**
     * baseInfoCompanyStat，网约车平台公司营运规模信息
     */
    BASE_INFO_COMPANY_STAT("baseInfoCompanyStat", "网约车平台公司营运规模信息"),

    /**
     * baseInfoCompanyPay,网约车平台公司支付信息
     */
    BASE_INFO_COMPANY_PAY("baseInfoCompanyPay", "网约车平台公司支付信息"),

    /**
     * baseInfoCompanyService，网约车平台公司服务机构
     */
    BASE_INFO_COMPANY_SERVICE("baseInfoCompanyService", "网约车平台公司服务机构"),

    /**
     * baseInfoCompanyPermit，网约车平台公司经营许可
     */
    BASE_INFO_COMPANY_PERMIT("baseInfoCompanyPermit", "网约车平台公司经营许可"),

    /**
     * baseInfoCompanyFare，网约车平台公司运价信息
     */
    BASE_INFO_COMPANY_FARE("baseInfoCompanyFare", "网约车平台公司运价信息"),

    /**
     * baseInfoVehicle，车辆基本信息
     */
    BASE_INFO_VEHICLE("baseInfoVehicle", "车辆基本信息"),

    /**
     * baseInfoVehicleInsurance，车辆保险信息
     */
    BASE_INFO_VEHICLE_INSURANCE("baseInfoVehicleInsurance", "车辆保险信息"),

    /**
     * baseInfoVehicleTotalMile，网约车车辆里程信息
     */
    BASE_INFO_VEHICLE_TOTAL_MILE("baseInfoVehicleTotalMile", "网约车车辆里程信息"),

    /**
     * baseInfoDriver，驾驶员基本信息
     */
    BASE_INFO_DRIVER("baseInfoDriver", "驾驶员基本信息"),

    /**
     * baseInfoDriverEducate，网约车驾驶员培训信息
     */
    BASE_INFO_DRIVER_EDUCATE("baseInfoDriverEducate", "网约车驾驶员培训信息"),

    /**
     * baseInfoDriverApp，驾驶员移动终端信息
     */
    BASE_INFO_DRIVER_APP("baseInfoDriverApp", "驾驶员移动终端信息"),

    /**
     * baseInfoDriverStat，网约车驾驶员统计信息
     */
    BASE_INFO_DRIVER_STAT("baseInfoDriverStat", "网约车驾驶员统计信息"),

    /**
     * baseInfoPassenger，乘客基本信息
     */
    BASE_INFO_PASSENGER("baseInfoPassenger", "乘客基本信息"),

    /**
     * orderCreate，订单发起
     */
    ORDER_CREATE("orderCreate", "订单发起"),

    /**
     * orderMatch，订单成功
     */
    ORDER_MATCH("orderMatch", "订单成功"),

    /**
     * orderCancel，订单撤销
     */
    ORDER_CANCEL("orderCancel", "订单撤销"),

    /**
     * operateLogin，车辆经营上线
     */
    OPERATE_LOGIN("operateLogin", "车辆经营上线"),

    /**
     * operateLogout，车辆经营下线
     */
    OPERATE_LOGOUT("operateLogout", "车辆经营下线"),

    /**
     * operateDepart，经营出发
     */
    OPERATE_DEPART("operateDepart", "经营出发"),

    /**
     * operateArrive，经营到达
     */
    OPERATE_ARRIVE("operateArrive", "经营到达"),

    /**
     * operatePay，经营支付
     */
    OPERATE_PAY("operatePay", "经营支付"),

    /**
     * positionDriver，驾驶员定位信息
     */
    POSITION_DRIVER("positionDriver", "驾驶员定位信息"),

    /**
     * positionVehicle，车辆定位信息
     */
    POSITION_VEHICLE("positionVehicle", "车辆定位信息"),

    /**
     * ratedPassenger，乘客评价信息
     */
    RATED_PASSENGER("ratedPassenger", "乘客评价信息"),

    /**
     * ratedPassengerComplaint，乘客投诉信息
     */
    RATED_PASSENGER_COMPLAINT("ratedPassengerComplaint", "乘客投诉信息"),

    /**
     * ratedDriverPunish，驾驶员处罚信息
     */
    RATED_DRIVER_PUNISH("ratedDriverPunish", "驾驶员处罚信息"),

    /**
     * ratedDriver，驾驶员信誉信息
     */
    RATED_DRIVER("ratedDriver", "驾驶员信誉信息"),

    /**
     * shareCompany，私人小客车合乘信息
     */
    SHARE_COMPANY("shareCompany", "私人小客车合乘信息"),

    /**
     * shareRoute，私人小客车合乘驾驶员行程发布
     */
    SHARE_ROUTE("shareRoute", "私人小客车合乘驾驶员行程发布"),

    /**
     * shareOrder，私人小客车合乘订单
     */
    SHARE_ORDER("shareOrder", "私人小客车合乘订单"),

    /**
     * sharePay，私人小客车合乘订单支付
     */
    SHARE_PAY("sharePay", "私人小客车合乘订单支付"),

    ;


    /**
     * 编码
     */
    private final String code;

    /**
     * 描述
     */
    private final String message;

    IPCTypeEnum(String code, String message) {
        this.code = code;
        this.message = message;
    }

    public String getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    /**
     * 根据code获取枚举
     *
     * @param code
     * @return
     */
    public static IPCTypeEnum getByCode(String code) {
        IPCTypeEnum en = null;
        for (IPCTypeEnum e : IPCTypeEnum.values()) {
            if (e.getCode().equals(code)) {
                en = e;
                break;
            }
        }
        return en;
    }


    /**
     * 获取枚举list数组
     *
     * @return
     */
    public static List<Map<Object, Object>> toList() {
        List<Map<Object, Object>> enumList = new ArrayList<>();
        for (IPCTypeEnum e : IPCTypeEnum.values()) {
            Map<Object, Object> enumMap = new HashMap<>();
            enumMap.put(e.getCode(), e.getMessage());
            enumList.add(enumMap);
        }
        return enumList;
    }

}
